package JDK8新性质.引用.特定类型的方法引用;

import java.util.Arrays;
import java.util.Comparator;

public class Test {
    public static void main(String[] args) {
        // 掌握特定类型的方法引用
        String[] names = {"baby", "angela", "Andy", "dlei", "caocao", "Babo", "jack", "Cici"};

        // 进行排序(默认是按照字符串的首字符编号进行升序排序的)
        Arrays.sort(names);
        System.out.println(Arrays.toString(names));

        //  要求忽略首字符大小写进行排序
//        Arrays.sort(names, new Comparator<String>() {
//            @Override
//            public int compare(String o1, String o2) {
//                // 制定比较规则
//                return o1.compareToIgnoreCase(o2);
//            }
//        });

        //  可优化(Lambda表达式简化)
        Arrays.sort(names, (o1, o2) -> o1.compareToIgnoreCase(o2));

        // 特定类型的方法引用,(使用前提: 如果某个Lambda表达式里只是调用一个实例方法, 并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特定类型的方法引用)
        // 类型 :: 方法
        Arrays.sort(names, String::compareToIgnoreCase);

        System.out.println(Arrays.toString(names));
    }
}
